/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BL;

import BE.BECargo;
import BE.BEEmpleado;
import BE.BEUsuario;
import DA.DACargo;
import DA.DAEmpleado;
import com.toedter.calendar.JDateChooser;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author alejandro
 */
public class BLEmpleado {
    
    public void limpiaTabla (JTable tblEmpleado)
    {
        BLModelo modelo = new BLModelo();
        tblEmpleado.setModel(modelo);

        modelo.addColumn("Código");
        modelo.addColumn("Cargo");
        modelo.addColumn("Nombre");
        modelo.addColumn("Apellido Paterno");
        modelo.addColumn("Apellido Materno");
        modelo.addColumn("Estado");
        modelo.addColumn("Tipo Documento");
        modelo.addColumn("Nro. Documento");
        
    }
    
    public BEEmpleado llenaVentana (int id)
    {
        DAEmpleado daEmpleado = new DAEmpleado();
        BEEmpleado empleado = daEmpleado.getEmpleadobyId(id);

        return empleado;
    }
    
    public BEEmpleado obtenerEmpleadoPorIdUsuario(int idUsuario)
    {
        DAEmpleado daEmpleado = new DAEmpleado();
        BEEmpleado empleado = daEmpleado.getEmpleadobyIdUsr(idUsuario);
        return empleado;
    }
    
    public void setCargoMant(JComboBox cmbCargo)
    {
        DACargo daCargo = new DACargo();
        List<BECargo> tipos = new ArrayList<BECargo>();
        
        //AKI ME QUEDE
        tipos = daCargo.obtenerCargo();

        cmbCargo.addItem(new BLCombo(0,""));
        if (tipos != null)
            for (int i=0;i<tipos.size();i++)
                cmbCargo.addItem(new BLCombo(tipos.get(i).getIdCargo(),
                                     tipos.get(i).getNombCargo()));

    }
    
    public int agregaEmpleado(String cargo,String nombre,String apePaterno,
                    String apeMaterno,String direccion,Date fechaIngreso,
            Date fechaNacimiento, int dni,int telefono,String email,JDateChooser selectorFechaNac,JDateChooser selectorFechaIn){
     
        BEEmpleado empleado = new BEEmpleado();
        DAEmpleado daEmpleado = new DAEmpleado();
    
        BLValidaciones validar = new BLValidaciones();
        
        Boolean error = false;
        String mensaje = "Error en el/los siguiente(s) campo(s): \n";
        
        if (cargo.equals("")){
             mensaje += "- Debe ingresar el cargo del empleado. \n";
             error = true;
         }
         if (nombre.equals("")){
             mensaje += "- Debe ingresar el Nombre del empleado. \n";
             error = true;
         }  
         if (apePaterno.equals("")){
             mensaje += "- Debe ingresar el Apellido Paterno del empleado. \n";
             error = true;
         }
         if (apeMaterno.equals("")){
             mensaje += "- Debe ingresar el Apellido Materno del empleado. \n";
             error = true;
         }    
         if (direccion.equals("")){
             mensaje += "- Debe ingresar la Dirección del empleado. \n";
             error = true;
         }    
           
         if ((validar.validarFecha(selectorFechaNac))==false){
              mensaje += "- La fecha de nacimiento del empleado. \n";
              error = true;
         }
          if ((validar.validarFechaIngreso(selectorFechaIn))==false){
              mensaje += "- La fecha de ingreso del empleado. \n";
              error = true;
         }
            
         if (dni == 0){
             mensaje += "- Debe ingresar el DNI. \n";
             error = true;
         }
         if (telefono == 0){
             mensaje += "- Debe ingresar el Teléfono. \n";
             error = true;
         }
         if ((validar.isEmail(email))==false){
               mensaje += "- Email incorrecto. \n";
               error = true;
         }
        if (error==false){
            if (JOptionPane.showConfirmDialog(null,"Desea agregar el empleado?",
                "Confirmación",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE) == 0)
            {
                empleado.setNombre(nombre);
                empleado.setApePaterno(apePaterno);
                empleado.setApeMaterno(apeMaterno);
                empleado.setDireccion(direccion);
                empleado.setFechaNacimiento(fechaNacimiento);
                empleado.setFechaIngreso(fechaIngreso);
                empleado.setTipoDocumento(1);
                empleado.setNroDocumento(dni);
                empleado.setTelefono(telefono);
                empleado.setEmail(email);
                empleado.setCargo(cargo);

                return daEmpleado.agregarEmpleado(empleado);
            }
                           
        } 
        else {
            JOptionPane.showMessageDialog(null,mensaje,
                                              "Error",JOptionPane.ERROR_MESSAGE);
        
        }
        
        //AKITERMINA
        
        
        
        
        
      
           
      return 1;
      }
    
    //codigo,dni,this.txtCargo.getText(),this.txtNombre.getText(), this.txtApePaterno.getText(),
      //   this.txtApeMaterno.getText(),this.ddcFecIngreso.getDate(), this.tblEmpleado,1
    public void buscaEmpleado (int codigo,int dni, String cargo, String nombre,String apePat,String apeMat,
                            String estado,JTable tblContacto, int tipoBusqueda)
    {
        DAEmpleado dAContacto = new DAEmpleado();
        ResultSet rs = null;
        BEEmpleado empleado = new BEEmpleado();

        empleado.setIdPersona(codigo);
        empleado.setTipoDocumento(1);
        empleado.setNroDocumento(dni);
        empleado.setCargo(cargo);
        empleado.setNombre(nombre);
        empleado.setApeMaterno(apeMat);
        empleado.setApePaterno(apePat);
        empleado.setEstado(estado);
        
        rs = dAContacto.buscarContacto(empleado,tipoBusqueda); //1 para buscar por parametros de busqueda
        this.llenaTabla(rs, tblContacto);
        
    }
    
       public void llenaTabla (ResultSet rs, JTable tblEmpleado)
    {
        DAEmpleado daEmpleado = new DAEmpleado();

        BLModelo modelo = new BLModelo();
        tblEmpleado.setModel(modelo);

        modelo.addColumn("Código");
        modelo.addColumn("Cargo");
        modelo.addColumn("Nombre");
        modelo.addColumn("Apellido Paterno");
        modelo.addColumn("Apellido Materno");
        modelo.addColumn("Estado");
        modelo.addColumn("Tipo Documento");
        modelo.addColumn("Nro. Documento");
     
        //Ocultar columna Código
        //tblContacto.getColumnModel().getColumn(0).setMaxWidth(0);
        //tblContacto.getColumnModel().getColumn(0).setMinWidth(0);
        //tblContacto.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(0);
        //tblContacto.getTableHeader().getColumnModel().getColumn(0).setMinWidth(0);

        try
        {
            while (rs.next())
            {
                Object [] fila = new Object[8];
                fila[0] = rs.getObject("IDEMPLEADO");
                fila[1] = rs.getObject("CARGO");
                fila[2] = rs.getObject("NOMBRE");
                fila[3] = rs.getObject("APEPATERNO");
                fila[4] = rs.getObject("APEMATERNO");
                fila[5] = rs.getObject("ESTADO");
                fila[6] = rs.getObject("DESCRIPCION");
                fila[7] = rs.getObject("NROTIPODOCUMENTO");
                modelo.addRow(fila);
                
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Error al llenar la tabla","Error",JOptionPane.ERROR_MESSAGE);
        }
    }
     
    
       public int modificaEmpleado(BEEmpleado empleado,JDateChooser selectorFecha,JDateChooser selectorFechaIn)
    {
        DAEmpleado daEmpleado = new DAEmpleado();
        BLValidaciones validar = new BLValidaciones();
        
        Boolean error = false;
        String mensaje = "Error en el/los siguiente(s) campo(s): \n";
        
        if (empleado.getCargo().equals("")){
             mensaje += "- Debe ingresar el cargo del empleado. \n";
             error = true;
         }
         if (empleado.getNombre().equals("")){
             mensaje += "- Debe ingresar el Nombre del empleado. \n";
             error = true;
         }  
         if (empleado.getApePaterno().equals("")){
             mensaje += "- Debe ingresar el Apellido Paterno del empleado. \n";
             error = true;
         }
         if (empleado.getApeMaterno().equals("")){
             mensaje += "- Debe ingresar el Apellido Materno del empleado. \n";
             error = true;
         }    
         if (empleado.getDireccion().equals("")){
             mensaje += "- Debe ingresar la Dirección del empleado. \n";
             error = true;
         }    
           
         if ((validar.validarFecha(selectorFecha))==false){
              mensaje += "- La fecha de nacimiento del empleado. \n";
              error = true;
         }
          if ((validar.validarFechaIngreso(selectorFechaIn))==false){
              mensaje += "- La fecha de ingreso del empleado. \n";
              error = true;
         }
           
         if (empleado.getNroDocumento() == 0){
             mensaje += "- Debe ingresar el Número de Documento. \n";
             error = true;
         }
         if (empleado.getTelefono() == 0){
             mensaje += "- Debe ingresar el Teléfono. \n";
             error = true;
         }
         if ((validar.isEmail(empleado.getEmail()))==false){
               mensaje += "- Email incorrecto. \n";
               error = true;
         }
        if (error==false){
            if (JOptionPane.showConfirmDialog(null,"Desea modificar el contacto?",
                "Confirmación",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE) == 0)
            {
                      
                return daEmpleado.modificaEmpleado(empleado);
            }
        
        
        } 
        else {
            JOptionPane.showMessageDialog(null,mensaje,
                                              "Error",JOptionPane.ERROR_MESSAGE);
        
        }
        return 1;
    }
       
    public int eliminarEmpleado (int IDProd, JTable tblEmpleado)
    {
        DAEmpleado daEmpleado = new DAEmpleado();

        return daEmpleado.eliminarEmpleado(IDProd);
        
    }
    
    public void modificaUsuarioEmpleado(BEEmpleado objEmpleado)
    {
        DAEmpleado dtaEmpleado = new DAEmpleado();
        dtaEmpleado.agregarUsuarioAEmpleado(objEmpleado);
    }
    
    public boolean tieneUsuarioAsignado(BEEmpleado empleado)
    {
        DAEmpleado dtaEmpleado= new DAEmpleado();
        return dtaEmpleado.tieneUsuarioAsignado(empleado);

    }

  
}
